package com.canbot.u05.versionupdate.utils;

import java.io.File;

/**
 * <pre>
 *     author: Blankj
 *     blog  : http://blankj.com
 *     time  : 2016/8/11
 *     desc  : 文件相关工具类
 * </pre>
 */
public class FileUtils {

    /**
     * 删除目录.
     *
     * @param dirPath 目录路径
     * @return {@code true}: 删除成功<br>
     * {@code false}: 删除失败
     */
    public static boolean deleteDir(String dirPath) {
        return deleteDir(getFileByPath(dirPath));
    }

    /**
     * 根据文件路径获取文件.
     *
     * @param filePath 文件路径
     * @return 文件
     */
    public static File getFileByPath(String filePath) {
        return StringUtils.isSpace(filePath) ? null : new File(filePath);
    }

    /**
     * 删除目录.
     *
     * @param dir 目录
     * @return {@code true}: 删除成功<br>
     * {@code false}: 删除失败
     */
    public static boolean deleteDir(File dir) {
        if (dir == null) {
            return false;
        }

        // 目录不存在返回true
        if (!dir.exists()) {
            return true;
        }

        // 不是目录返回false
        if (!dir.isDirectory()) {
            return false;
        }

        // 现在文件存在且是文件夹
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isFile()) {
                if (!deleteFile(file)) {
                    return false;
                }

            } else if (file.isDirectory()) {
                if (!deleteDir(file)) {
                    return false;
                }

            }
        }
        return dir.delete();
    }


    /**
     * 删除文件.
     *
     * @param file 文件
     * @return {@code true}: 删除成功<br>
     * {@code false}: 删除失败
     */
    public static boolean deleteFile(File file) {
        return file != null
                && (!file.exists() || file.isFile() && file.delete());
    }
}